package cn.lyw.userMessage.controller.controller;

import cn.common.beancopy.util.BeanCopierUtil;
import cn.common.restresult.util.RestResult;

import cn.lyw.usermessage.controller.dto.AddUserMassageDTO;
import cn.lyw.usermessage.controller.dto.EditUserMassageDTO;
import cn.lyw.usermessage.controller.dto.GetLoginUserDTO;
import cn.lyw.usermessage.controller.vo.GetLoginUserVO;
import cn.lyw.usermessage.service.bo.AddUserMassageBO;
import cn.lyw.usermessage.service.bo.EditUserMassageBO;
import cn.lyw.usermessage.service.bo.GetLoginUserBO;
import cn.lyw.usermessage.service.domain.GetLoginUserDO;
import cn.lyw.usermessage.service.service.UserMassageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * @Author   lyw
 * @Description 用户个人信息接口
 * @Date 17:42 2021/7/16
 * @Param
 * @return
 */
@RestController
@RequestMapping("/userMessage")
public class UserMessageController {

    @Autowired
    private UserMassageService userMassageService;


    /**
     * @Author   lyw
     * @Description 根据用户token信息查询用户全部的信息
     * @Date 17:46 2021/7/16
     * @Param
     * @return
     */
    @GetMapping("/getLoginUser")
    public RestResult<List<GetLoginUserVO>> getLoginUser(GetLoginUserDTO dto){
        //将dto参数copy到bo类中
        GetLoginUserBO getLoginUserBO = BeanCopierUtil.copyObj(dto, GetLoginUserBO.class);
        //调用service中的查询方法
        List<GetLoginUserDO> loginUser = userMassageService.getLoginUser(getLoginUserBO);
        //将返回值类型转为GetLoginUserVO
        List<GetLoginUserVO> getLoginUserVOS = BeanCopierUtil.copyList(loginUser, GetLoginUserVO.class);
        return new RestResult<>(getLoginUserVOS);
    }


    /**
     * @Author   lyw
     * @Description  添加用户信息
     * @Date 17:56 2021/7/16
     * @Param
     * @return
     */
    @PostMapping("/addUserMessage")
    public RestResult addUserMassage(AddUserMassageDTO dto){
        //将dto参数copy到bo类中
        AddUserMassageBO addUserMassageBO = BeanCopierUtil.copyObj(dto, AddUserMassageBO.class);
        //调用service中添加方法
        return userMassageService.addUserMassage(addUserMassageBO);
    }


    /**
     * @Author   lyw
     * @Description 删除用户信息
     * @Date 18:33 2021/7/16
     * @Param
     * @return
     */
    @PostMapping("/delUserMessage")
    public RestResult delUserMessage(String miId){
        //调用service中的删除方法
        return userMassageService.delUserMassage(miId);
    }


    /**
     * @Author   lyw
     * @Description 修改用户信息
     * @Date 18:40 2021/7/16
     * @Param
     * @return
     */
    @PostMapping("/editUserMessage")
    public RestResult editUserMessage(EditUserMassageDTO dto){
        //将dto参数copy到bo类中
        EditUserMassageBO editUserMassageBO = BeanCopierUtil.copyObj(dto, EditUserMassageBO.class);
        //调用service中添加方法
        return userMassageService.editUserMassage(editUserMassageBO);
    }

}
